#!/bin/bash
if [ `id -u` -ne 0 ]; then echo "Debe ejecutar el script como root"; exit; fi
if [ "$1" = "" ]; then echo "El primer parametro debe ser un archivo con la lista"; exit; fi
while read id usuario grupo home pass
do
	if [ "$pass" = "" ]; then
		if [ "$home" = "" ]; then #faltan 2 parametros
			pass=$grupo
			grupo=""
		else #falta un parametro
			pass=$home
			if [[ "$grupo" =~ "/" ]]; then
				home=$grupo
				grupo=""
			fi
		fi
	fi
			
	lineaId=$(grep "x:$id" ./passwd)
	lineaNombre=$(grep "$usuario:x" ./passwd)
	
	if [ "$lineaNombre" = "" -o "$lineaId" = "$lineaNombre" ]
	then
		#creo el grupo si no existia
		if [ "$grupo" != "" ]; then
			realGrupo=$(grep "$grupo:x" /etc/group);
			if [ "$realGrupo" = "" ]; then groupadd $grupo; fi
		fi
		
		if [ "$lineaId" = "" -a "$lineaNombre" = "" ]
		then
			#Usuario nuevo
			useradd $usuario -u $id -g $grupo -d $home
			(echo $pass; sleep 1; echo $pass) | passwd $usuario
		else
			#Modificar usuario
			(echo $pass; sleep 1; echo $pass) | passwd $usuario
			if [ "$home" != "" -a "$grupo" != "" ]
			then usermod -u $id -d $home -g $grupo -m $usuario
			else if [ "$home" != "" ]
				then usermod -u $id -d $home -m $usuario
				else usermod -u $id -m $usuario
				fi
			fi
		fi
	else echo "Error, nombre-id mismatch" 1>&2
	fi
done < $1
